import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPool;

import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Set;

/**
 * Hash 类型练习
 */
public class RedisHashDemo {
    public static void main(String[] args) {
        JedisPool jedisPool = new JedisPool("tcp://127.0.0.1:8888");
        try(Jedis jedis = jedisPool.getResource()){
            test1(jedis);
            test2(jedis);
            test3(jedis);
            test4(jedis);
        }
    }

    /**
     * hset && hget  value是一个map
     * @param jedis
     */
    public static void test1(Jedis jedis){

    }

    /**
     * hexists 判断 key 以及 fileld 是否存在
     * @param jedis
     */
    public static void test2(Jedis jedis){
        jedis.flushDB();

        Map<String,String> map = new HashMap<>();
        map.put("f1","111");
        map.put("f2","222");
        jedis.hset("key",map);

        System.out.println(jedis.hexists("key", "f1"));
        System.out.println(jedis.hexists("key", "f100"));

    }

    /**
     * hdel  删除指定的 key 和 filed
     * @param jedis
     */
    public static void test3(Jedis jedis){
        Map<String,String> map = new HashMap<>();
        map.put("f1","111");
        map.put("f2","222");
        jedis.hset("key",map);

        jedis.hdel("key","f1","f2");
    }


    /**
     * hkeys && hvals  获取所有的 field 和 value
     * @param jedis
     */
    public static void test4(Jedis jedis){
        Map<String,String> map = new HashMap<>();
        map.put("f1","111");
        map.put("f2","222");
        jedis.hset("key",map);

        Set<String> key = jedis.hkeys("key"); // 不可重复
        List<String> key1 = jedis.hvals("key"); // 可重复
        System.out.println(key);
        System.out.println(key1);
    }

    /**
     * hmget && hmset
     * @param jedis
     */
    public static void test5(Jedis jedis){

    }


}
